﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using BDSUETableAdapters;

/// <summary>
/// Calse que permite la creacion, modificacion, eliminacion y consulta de Notificaciones que realizen los usuarios.
/// </summary>
/// <remarks>...
/// No se que hace...</remarks>
/// <example>ESTO ES UN EJEMPLO
/// <code>
/// // Utilización de la clase GestionarNotificaciones.
/// GestionarNotificaciones gestNoti = new GestionarNotificaciones();
/// // Llamada a la funcion CrearNotificacion.
/// int res = gestNoti.CrearNotificacion("andres2010","c4rlox","Subir hoja de vida","Necesito que suba el archivo con su hoja de vida");
/// </code>
/// <c>-sin comentarios-</c>
/// </example>
public class GestionNotificaciones
{
    NotificacionTableAdapter nA;

    #region "Constructor"
    public GestionNotificaciones()
    {
        nA = new NotificacionTableAdapter();
    }
    #endregion

    /// <summary>
    /// Permite eliminar de la base de datos una Notificacion por medio de su identificador.
    /// </summary>
    /// <param name="idNotificacion">Identificador entero (int) con el que se encuentra guardado en la base de datos.</param>
    /// <returns>Devuelve un entero diciendo cuantas filas fueron alteradas en la bae de datos.</returns>
    public int EliminarNotificacion(long idNotificacion)
    {
        NotificacionTableAdapter nA = new NotificacionTableAdapter();
        return nA.DeleteNotificacion(idNotificacion);
    }

    /// <summary>
    /// Permite modificar de la base de datos una Notificacion por medio de su identificador.
    /// </summary>
    /// <param name="idNotificacion">Identificador entero (int) con el que se encuentra guardado en la base de datos.</param>
    /// <returns>Devuelve un entero diciendo cuantas filas fueron alteradas en la bae de datos.</returns>
    public int ModificarEstadoDeNotificacion(string estado, long idNotificacion)
    {
        NotificacionTableAdapter nA = new NotificacionTableAdapter();
        return nA.UpdateEstadoNotificacion(estado, idNotificacion);
    }

    public int CrearNotificacion(string remitente, string destinatario, string asunto, string descripcion)
    {
        NotificacionTableAdapter nA = new NotificacionTableAdapter();
        Usuario tmp = new Usuario();
        //if(tmp.ExisteUsuario(remitente))
        //    if(tmp.ExisteUsuario(destinatario))
                return nA.InsertNotificacion("sin revisar", remitente, destinatario, asunto, descripcion, DateTime.Now.ToString());
        //return 0;
    }

    public DataRow ObtNotificacionPorId(long idNotificacion)
    {
        NotificacionTableAdapter nA = new NotificacionTableAdapter();
        return nA.GetDataByIdNotificacion(idNotificacion).Rows[0];
    }

    //FUNCIONES PARA OBTENER LAS SOLICITUDES

    public BDSUE.NotificacionDataTable ObtEnviadasPorUsuarioAEmpresa(string remitente)
    {
        return nA.GetDataByEnviadasPorUsuarioAEmpresa(remitente);
    }

    public BDSUE.NotificacionDataTable ObtEnviadasPorUsuarioAUsuario(string remitente)
    {
        return nA.GetDataByEnviadasPorUsuarioAUsuario(remitente);
    }

    public BDSUE.NotificacionDataTable ObtRecibidasPorUsuarioDeEmpresa(string destinatario)
    {
        return nA.GetDataByRecibidasPorUsuarioDeEmpresa(destinatario);
    }

    public BDSUE.NotificacionDataTable ObtRecibidasPorUsuarioDeUsuario(string destinatario)
    {
        return nA.GetDataByRecibidasPorUsuarioDeUsuario(destinatario);
    }

    public BDSUE.NotificacionDataTable ObtEnviadasPorEmpresaAUsuario(string remitente)
    {
        return nA.GetDataByEnviadasPorEmpresaAUsuario(remitente);
    }

    public BDSUE.NotificacionDataTable ObtRecibidasPorEmpresaDeUsuario(string destinatario)
    {
        return nA.GetDataByRecibidasPorEmpresaDeUsuario(destinatario);
    }
}